//package com.lyc.qy158springbootredis.service.impl;
//
//import com.lyc.qy158springbootredis.dao.DeptDao;
//import com.lyc.qy158springbootredis.entity.Dept;
//import com.lyc.qy158springbootredis.service.DeptService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.core.ValueOperations;
//import org.springframework.stereotype.Service;
//
//import java.util.concurrent.TimeUnit;
//
///**
// * @author ：Xiaochen
// * @date ：Created in 2022/12/7 20:37
// * @description：
// * @modified By：
// * @version:
// */
//@Service
//public class DeptServiceImpl02 implements DeptService {
//    @Autowired
//    private DeptDao deptDao;
//
//    @Autowired
//    private RedisTemplate<String, Object> redisTemplate;
//
//    @Override
//    public Dept findById(Integer id) {
//        ValueOperations<String, Object> forValue = redisTemplate.opsForValue();
//        //1. 查询缓存: key的名称： 【模块名称::类名::唯一主键】
//        Object o = forValue.get("dept::" + id);
//        if (o != null) {
//            return (Dept) o;
//        }
//        Dept dept = deptDao.selectById(id);
//        if (dept != null) {
//            //放入缓存以便下次能命中, 缓存中数据会越来越大
//            forValue.set("dept::" + id, dept, 3600, TimeUnit.SECONDS);
//
//        }
//        return dept;
//    }
//
//    @Override
//    public Integer delete(Integer id) {
//        //删除缓存中指定的key
//        redisTemplate.delete("dept::"+id);
//        //只删除了数据库
//        int i = deptDao.deleteById(id);
//
//        return i;
//    }
//
//    @Override
//    public Dept save(Dept dept) {
//        deptDao.insert(dept);
//        return dept;
//    }
//
//    @Override
//    public Dept update(Dept dept) {
//        //只修改数据库，但是缓存中的数据还是之前的。
//        deptDao.updateById(dept);
//        ValueOperations<String, Object> forValue = redisTemplate.opsForValue();
//        forValue.set("dept::"+dept.getId(),dept,3600,TimeUnit.SECONDS);
//        return dept;
//    }
//}